<HTML>
<!--This file created 12/13/07 1:23 AM by Claris Home Page version 3.0-->
<HEAD>
   <TITLE>Learning TXL</TITLE>
   <META NAME=GENERATOR CONTENT="Claris Home Page 3.0">
   <X-CLARIS-WINDOW TOP=102 BOTTOM=699 LEFT=86 RIGHT=998>
   <X-CLARIS-TAGVIEW MODE=full>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<P><FONT FACE="Comic Sans MS"><TABLE BORDER=0 CELLPADDING=0>
   <TR>
      <TD WIDTH=90>
         <CENTER><FONT FACE="Comic Sans MS"><IMG SRC="images/TXLbadge.gif" WIDTH=84 HEIGHT=87 X-CLARIS-USEIMAGEWIDTH X-CLARIS-USEIMAGEHEIGHT ALIGN=right>&nbsp;</FONT></CENTER>
      </TD>
      <TD WIDTH=20>
         <P></P>
      </TD>
      <TD COLSPAN=2 WIDTH="40%">
         <P><FONT SIZE="+3" FACE="Comic Sans MS" COLOR="#003333"><B>Learning
         </B></FONT><FONT SIZE="+3" FACE="Comic Sans MS" COLOR="#FF6600"><B>TXL</B></FONT></P>
      </TD>
      <TD COLSPAN=2 WIDTH="42%">
         <DL>
            <DT><A HREF="#Tour"><FONT SIZE="-1" FACE="Comic Sans MS">The
            Guided Tour</FONT></A></DT>
            
            <DT><A HREF="#Intro"><FONT SIZE="-1" FACE="Comic Sans MS">A
            Practical Introduction</FONT></A></DT>
            
            <DT><A HREF="#Challenge"><FONT SIZE="-1" FACE="Comic Sans MS">The
            TXL Challenge</FONT></A></DT>
         </DL>
      </TD>
   </TR>
   <TR>
      <TD WIDTH=90 HEIGHT=8>
         <P></P>
      </TD>
      <TD WIDTH=20 HEIGHT=8>
         <P></P>
      </TD>
      <TD WIDTH="20%" HEIGHT=8>
         <P></P>
      </TD>
      <TD WIDTH="20%" HEIGHT=8>
         <P></P>
      </TD>
      <TD WIDTH="20%" HEIGHT=8>
         <P></P>
      </TD>
      <TD WIDTH="22%" HEIGHT=8>
         <P></P>
      </TD>
   </TR>
   <TR>
      <TD VALIGN=top WIDTH=90>
         <P ALIGN=right><FONT SIZE="-1" FACE="Comic Sans MS"><BR>
         </FONT><A HREF="index.html"><FONT SIZE="-1" FACE="Comic Sans MS">Home</FONT></A></P>
         
         <P ALIGN=right><A HREF="nabouttxl.html"><FONT SIZE="-1" FACE="Comic Sans MS">About
         TXL</FONT></A></P>
         
         <P ALIGN=right><A HREF="nlearn.html"><FONT SIZE="-1" FACE="Comic Sans MS">Learn</FONT></A></P>
         
         <P ALIGN=right><A HREF="ndownload.html"><FONT SIZE="-1" FACE="Comic Sans MS">Download</FONT></A></P>
         
         <P ALIGN=right><A HREF="nresources.html"><FONT SIZE="-1" FACE="Comic Sans MS">Resources</FONT></A></P>
         
         <P ALIGN=right><A HREF="ndocs.html"><FONT SIZE="-1" FACE="Comic Sans MS">Documentation</FONT></A></P>
         
         <P ALIGN=right><A HREF="nsupport.html"><FONT SIZE="-1" FACE="Comic Sans MS">Support</FONT></A></P>
         
         <P></P>
      </TD>
      <TD VALIGN=top WIDTH=20>
         <CENTER><FONT FACE="Comic Sans MS"><BR>
         <IMG SRC="images/tall_line.gif" WIDTH=12 HEIGHT=234 X-CLARIS-USEIMAGEWIDTH X-CLARIS-USEIMAGEHEIGHT ALIGN=bottom>&nbsp;</FONT></CENTER>
      </TD>
      <TD VALIGN=top COLSPAN=4 WIDTH="82%">
         <P><FONT SIZE="-1" FACE="Comic Sans MS"><IMG SRC="images/ltgreenbox.gif" WIDTH=8 HEIGHT=8 ALIGN=middle>&nbsp;&nbsp;</FONT><FONT FACE="Comic Sans MS">Learning
         TX</FONT>L<BR>
         <FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>TXL</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">
         is a weird and wonderful language, with a new, rich and
         distinctly different programming paradigm. Once you get your
         mind around it, it can help you very rapidly achieve real
         magic. But because it is different, it takes some time to
         understand. Along the way you will probably mistake it
         several times for things it isn't (for example, Haskell,
         Awk, Yacc or XSL/T).</FONT></P>
         
         <P><FONT SIZE="-1" FACE="Comic Sans MS">If you have some
         experience in pure functional and logic programming, you
         have a step up, and it won't take you long to get started.
         If you don't have experience in pure functional programming,
         it'll take some time to learn TXL. In any case, the more
         experience you gain with TXL, the more effective you will be
         in using it.<BR>
         <A NAME=Tour></A></FONT></P>
         
         <P><FONT SIZE="-1" FACE="Comic Sans MS"><IMG SRC="images/ltgreenbox.gif" WIDTH=8 HEIGHT=8 ALIGN=middle>&nbsp;&nbsp;</FONT><FONT FACE="Comic Sans MS">The
         Guided Tour<BR>
         </FONT><FONT SIZE="-1" FACE="Comic Sans MS">One way to begin
         learning TXL is to take the guided tour</FONT><A HREF="tour/tour1.html"><FONT SIZE="-1" FACE="Comic Sans MS">,</FONT></A><FONT SIZE="-1" FACE="Comic Sans MS">
         a short journey through the basic features of the TXL
         language. The tour introduces basic concepts such as token
         and grammar specification, rules, functions, patterns,
         replacements, variables and parameters, and prepares you to
         enter the world of </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>TXL</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">.</FONT></P>
         
         <BLOCKQUOTE><A HREF="tour/tour1.html"><FONT FACE="Comic Sans MS">The
            Guided Tour of TXL</FONT></A><FONT SIZE="-1" FACE="Comic Sans MS"><BR>
            A short online </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>web
            tour</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS"> of
            the basic features of the </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>TXL
            Programming Language</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">.
            <A NAME=Intro></A></FONT></BLOCKQUOTE>
         
         <P><FONT SIZE="-1" FACE="Comic Sans MS"><IMG SRC="images/ltgreenbox.gif" WIDTH=8 HEIGHT=8 ALIGN=middle>&nbsp;&nbsp;</FONT><FONT FACE="Comic Sans MS">A
         Practical Introduction<BR>
         </FONT><FONT SIZE="-1" FACE="Comic Sans MS">If you're
         anxious to get started and learn as you go, a more go-to-it
         point of view may suit your taste. ("Just the facts,
         Ma'am.") If so, the practical introduction to
         </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>TXL</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">
         is for you.</FONT></P>
         
         <BLOCKQUOTE><A HREF="docs/TXLintro.pdf"><FONT FACE="Comic Sans MS">A
            Practical Introduction to
            TXL</FONT></A><FONT SIZE="-1" FACE="Comic Sans MS"><BR>
            A slide show presentation by Jim Cordy of Queen's
            University from </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>TXL</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">
            </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>Day
            2001 </B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">that
            introduces the basics of practical
            </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>TXL</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">
            programming for software analysis and transformation
            tasks in a "quick start" hands-on way.</FONT></BLOCKQUOTE>
         
         <P><FONT SIZE="-1" FACE="Comic Sans MS">If you're an expert
         in programming language processors, transformation systems
         or parsers, you may want to follow the practical
         introduction up with these detailed continuations.
         </FONT></P>
         
         <BLOCKQUOTE><A HREF="docs/TXLgrammars.pdf"><FONT FACE="Comic Sans MS">Working
            with Grammars</FONT></A><FONT SIZE="-1" FACE="Comic Sans MS"><BR>
            A slide show presentation by Andrew Malton of the
            University of Waterloo from </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>TXL</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">
            </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>Day
            2001 </B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">on
            the practice of crafting and working with structured
            grammars in </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>TXL</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">.</FONT>
            
            <P><A HREF="docs/TXLtranspara.pdf"><FONT FACE="Comic Sans MS">Transformation
            Paradigms</FONT></A><FONT SIZE="-1" FACE="Comic Sans MS"><BR>
            A slide show presentation by Tom Dean of Queen's
            University from </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>TXL</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">
            </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>Day
            2001 </B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">on
            paradigms for transforming across languages using
            </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>TXL</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">.
            <A NAME=Challenge></A></FONT></P></BLOCKQUOTE>
         
         <P><FONT SIZE="-1" FACE="Comic Sans MS"><IMG SRC="images/ltgreenbox.gif" WIDTH=8 HEIGHT=8 ALIGN=middle>&nbsp;&nbsp;</FONT><FONT FACE="Comic Sans MS">The
         TXL Challenge<BR>
         </FONT><FONT SIZE="-1" FACE="Comic Sans MS">The
         </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>TXL
         Challenge</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS"> is
         a structured sequence of four simple transformation problems
         specifically designed to quickly introduce you to the TXL
         paradigm. It is recommended that all new users attempt the
         challenge before trying to code their own solutions in TXL.
         It has helped scores of new users to learn the "ropes" of
         TXL in the past, and it's a quick and painless way to speed
         over the "learning curve" for this weird and wonderful
         language.</FONT></P>
         
         <P><FONT SIZE="-1" FACE="Comic Sans MS">How it works: You
         are given a TXL grammar for the programming language Turing,
         which you (intentionally) probably do not know (but it looks
         kind of like Pascal, so it is probably familiar).</FONT></P>
         
         <P><FONT SIZE="-1" FACE="Comic Sans MS">You are presented
         with a series of four problems in transforming Turing
         programs. For each problem, you are asked to:</FONT></P>
         
         <UL>
            <LI><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>Program</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">
            a Solution in </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>TXL</B></FONT></LI>
            
            <LI><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>Test</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">
            Your Solution on a Given Set of Input Data</FONT></LI>
            
            <LI><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>Submit</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">
            Your Tested Solution to a </FONT><A HREF="noracles.html"><FONT SIZE="-1" FACE="Comic Sans MS">TXL
            Oracle</FONT></A></LI>
            
            <LI><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>Revise</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">,
            Re-Test and Re-submit Your Solution Until the Oracle Is
            Satisfied</FONT></LI>
         </UL>
         
         <P><FONT SIZE="-1" FACE="Comic Sans MS">The Oracle will not
         allow you to move on to the next problem until you have
         demonstrated that you have learned the lessons of the
         previous problem. When you have successfully completed all
         four of the challenge problems, you have earned your license
         to program in </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>TXL</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">.</FONT></P>
         
         <P><FONT SIZE="-1" FACE="Comic Sans MS">You can find the
         </FONT><FONT SIZE="-1" FACE="Comic Sans MS" COLOR="#FF6600"><B>TXL
         Challenge</B></FONT><FONT SIZE="-1" FACE="Comic Sans MS">
         </FONT><A HREF="nchallenge.html"><FONT SIZE="-1" FACE="Comic Sans MS">here</FONT></A><FONT SIZE="-1" FACE="Comic Sans MS">.</FONT></P>
      </TD>
   </TR>
   <TR>
      <TD WIDTH=90 HEIGHT=12>
         <P></P>
      </TD>
      <TD WIDTH=20 HEIGHT=12>
         <P></P>
      </TD>
      <TD WIDTH="20%" HEIGHT=12>
         <P></P>
      </TD>
      <TD WIDTH="20%" HEIGHT=12>
         <P></P>
      </TD>
      <TD WIDTH="20%" HEIGHT=12>
         <P></P>
      </TD>
      <TD WIDTH="22%" HEIGHT=12>
         <P></P>
      </TD>
   </TR>
</TABLE>
 </FONT></P>

<P><FONT FACE="Comic Sans MS">&nbsp;</FONT></P>
</BODY>
</HTML>
